import router from './router'
import store from './store'
import { Message } from 'element-ui'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import { getToken } from '@/utils/auth' // get token from cookie
import getPageTitle from '@/utils/get-page-title'

NProgress.configure({ showSpinner: false }) // NProgress Configuration

const whiteList = ['/login', '/auth-redirect'] // no redirect whitelist

// router.beforeEach(async (to, from, next) => {
//     //   // start progress bar
//     //   NProgress.start()

//     //   // set page title
//     //   document.title = getPageTitle(to.meta.title)

//     //   // determine whether the user has logged in
//     //   const hasToken = getToken()

//     //   if (hasToken) {
//     //     if (to.path === '/login') {
//     //       // if is logged in, redirect to the home page
//     //       next({ path: '/' })
//     //       NProgress.done() // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939
//     //     } else {
//     //       // determine whether the user has obtained his permission roles through getInfo
//     //       const hasRoles = store.getters.roles && store.getters.roles.length > 0
//     //       if (hasRoles) {
//     //         next()
//     //       } else {
//     //         try {
//     //           // get user info
//     //           // note: roles must be a object array! such as: ['admin'] or ,['developer','editor']
//     //           const { roles } = await store.dispatch('user/getInfo')

//     //           // generate accessible routes map based on roles
//     //           const accessRoutes = await store.dispatch('permission/generateRoutes', roles)

//     //           // dynamically add accessible routes
//     //           router.addRoutes(accessRoutes)

//     //           // hack method to ensure that addRoutes is complete
//     //           // set the replace: true, so the navigation will not leave a history record
//     //           next({ ...to, replace: true })
//     //         } catch (error) {
//     //           // remove token and go to login page to re-login
//     //           await store.dispatch('user/resetToken')
//     //           Message.error(error || 'Has Error')
//     //           next(`/login?redirect=${to.path}`)
//     //           NProgress.done()
//     //         }
//     //       }
//     //     }
//     //     /* has no token*/

//     //     if (whiteList.indexOf(to.path) !== -1) {
//     //       // in the free login whitelist, go directly
//     //       next()
//     //     } else {
//     //       // other pages that do not have permission to access are redirected to the login page.
//     //       next(`/login?redirect=${to.path}`)
//     //       NProgress.done()
//     //     }
//     //   }
//     // next()
//     //获取用户信息
//     let { MenusList } = store.state
//     // const { userName } = userInfo
//     // console.log('用户角色', userName ? userName : '未登陆')
//     //有用户信息
//     if (MenusList) {
//         store.commit('ADD_ROUTE')
//         next()
//         // let { routerList } = userInfo
//         // //根据to.name来判断是否为动态路由, 是否有人知道还有更好的判断方法？
//         // if (!to.name) {
//         //     //当前路由是动态的，确定是有的, 有就跳自己，没有就跳404
//         //     if (routerList.findIndex((i) => i.path === to.path) !== -1) {
//         //         next({ ...to, replace: true })
//         //     } else {
//         //         next('/404')
//         //     }
//         // } else {
//         //     next()
//         // }
//     }
//     //无用户信息
//     // else {
//     //     //没有权限访问，跳入没有权限页面/或者登陆页面
//     //     // 跳转之前要判断一下是否为需要跳转的界面，不然会进入死循环
//     //     if (to.path === '/login') {
//     //         next()
//     //     } else {
//     //         Message.error('请先登陆！')
//     //         next('/login')
//     //     }
//     // }
// })


router.beforeEach((to, from, next) => {
    // console.group('%c%s', 'color:blue', `${new Date().getTime()}  ${to.path} 的全局前置守卫----------`)
    // console.log('所有活跃的路由记录列表', router.getRoutes())
    // console.groupEnd()
    // const token = store.getters.GET_TOKEN
    const token = localStorage.getItem('token')
    let isLoadRouters = store.state.isLoadRouters
    // if (inWhiteList(to.path)) {
    //     next()
    // } else {
    //用户已登录
    // console.log(token, '我是token');
    console.log(token);

        console.log('我是状态', isLoadRouters);
        
        if (token) {
            if (isLoadRouters) {
                // console.log('路由已添加，直接跳转到目标页面');
                // store.commit('ADD_ROUTE')
                next()
            } else {
                //解决刷新页面空白
                //console.log('重新加载路由，并跳转到目标页');
                // let menuList = store.getters.GET_MENULIST
                store.commit('SET_ISLOADROUTERS', true)
                //添加动态路由
                // generateRoutes(menuList)
                setTimeout(() => {
                    store.commit('ADD_ROUTE')
                    next({...to, replace: true})
                }, 1000);
                
                
                // next({...to, replace: true})
            }
        } else {
            // console.log('无登录信息，跳转到登录页');
            store.commit('SET_ISLOADROUTERS', false)
            if (to.path === '/login') {
                next()
            } else {
                Message.error('请先登录！')
                next('/login')
            }
            // next()
        }
    // }
 
})

router.afterEach(() => {
    // finish progress bar
    NProgress.done()
})
